Spreading comments to other documents

ABSTRACT

A server device is configured to receive a comment associated with a first document, the comment corresponding to a first portion of the first document; identify a second document that includes a second portion that matches the first portion of the first document; and store the comment in association with the first document and the second document. The server device is further configured to receive, from a client device, information that the client device is accessing the second document, and transmit the comment for presentation in connection with the second document on a display associated with the client device.

BACKGROUND

Many techniques are available to users today to find information on theworld wide web (“web”). For example, users often use web browsers and/orsearch engines to find information of interest.

A user may enter a search query into a search box of a browser and thebrowser may submit the search query to a search engine. The searchengine may identify documents that match the search query, rank thedocuments based on various factors, and return a ranked list ofdocuments to the user. The user may select a document from the list andrequest the document. A browser may retrieve the requested document anddisplay the document to the user in a browser window.

The amount of information that is available to users on the web can beoverwhelming. It is a difficult task to present users with informationin which the users are interested.

SUMMARY

According to one implementation, a method, performed by a server device,may include receiving a comment associated with a first document, thecomment corresponding to a portion of the first document; determiningthat a size of the portion of the first document is greater than athreshold size; identifying one or more second documents when the sizeof the portion of the first document is greater than the threshold size,where each of the one or more second documents may include a portionthat matches the portion of the first document; storing, in a memoryassociated with the server device, the comment in association with thefirst document and the one or more second documents; and presenting thecomment in connection with one of the one or more second documents whenthe one of the one or more second documents is accessed by a user.

According to another implementation, a system may include one or moredevices. The one or more devices may receive a comment associated with afirst document, the comment providing an opinion or remark regarding aportion of the first document; determine that a size of the portion ofthe first document is greater than a threshold size; identify a seconddocument when the size of the portion of the first document is greaterthan the threshold size, where the second document may include a portionthat matches the portion of the first document; store the comment inassociation with the first document and the second document; receive,from a client device, information that the client device is accessingthe second document; and transmit the comment for presentation inconnection with the second document on a display associated with theclient device.

According to yet another implementation, a server device may include amemory and a processor. The processor may receive a comment associatedwith a first document, the comment corresponding to a first portion ofthe first document; identify a second document that includes a secondportion that matches the first portion of the first document; store, inthe memory, the comment in association with the first document and thesecond document; receive, from a client device, information that theclient device is accessing the second document; and transmit the commentfor presentation in connection with the second document on a displayassociated with the client device.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this specification, illustrate one or more embodiments describedherein and, together with the description, explain these embodiments. Inthe drawings:

FIG. 1 is a diagram illustrating an exemplary overview of animplementation described herein;

FIG. 2 is a diagram of an exemplary environment in which systems andmethods described herein may be implemented;

FIG. 3 is a diagram of exemplary components of a client or a server ofFIG. 2;

FIG. 4 is a diagram of functional components of a server of FIG. 2;

FIG. 5 is a diagram of exemplary fields that may be provided within thecomments database of FIG. 4;

FIG. 6 is a flowchart of an exemplary process for creating a comment;

FIGS. 7 and 8 are diagrams of examples of creating a comment;

FIG. 9 is a flowchart of an exemplary process for spreading a comment toother documents;

FIG. 10 is a flowchart of an exemplary process for presenting a commentin connection with a document; and

FIGS. 11 and 12 are diagrams of examples of presenting a comment.

DETAILED DESCRIPTION

The following detailed description refers to the accompanying drawings.The same reference numbers in different drawings may identify the sameor similar elements.

OVERVIEW

For some documents, users might like to see users' comments regardingthese documents. A “comment,” as used herein, may include text (e.g.,styled or markup text, such as HyperText Markup Language (HTML)), audiodata, video data, and/or image data that provides an opinion of, orotherwise remarks upon, the contents of a document or a portion of adocument. One example of a comment may include a document whose solepurpose is to contain the opinion/remark. Another example of a commentmay include a blog post. Yet another example of a comment may include aweb page or a news article that remarks upon an item (e.g., a product, aservice, a company, a web site, a person, a geographic location, orsomething else that can be remarked upon).

A “document,” as the term is used herein, is to be broadly interpretedto include any machine-readable and machine-storable work product. Adocument may include, for example, an e-mail, a web site, a file, acombination of files, one or more files with embedded links to otherfiles, a news group posting, a news article, a blog, a business listing,an electronic version of printed text, a web advertisement, etc. In thecontext of the Internet, a common document is a web page. Documentsoften include textual information and may include embedded information(such as meta information, images, hyperlinks, etc.) and/or embeddedinstructions (such as Javascript, etc.). A “link,” as the term is usedherein, is to be broadly interpreted to include any reference to/from adocument from/to another document or another part of the same document.

FIG. 1 is a diagram illustrating an exemplary overview of animplementation described herein. As shown in FIG. 1, assume that a userrequests access to a web page about a particular topic (shown as “webpage 1” in FIG. 1). The user may decide to provide a comment regarding aportion of the web page. In this case, the user may select a portion ofthe web page to comment upon (shown as “portion” in FIG. 1). The usermight activate the commenting function to provide the comment. The usermay then provide an opinion or remark for the comment (shown as“comment” in FIG. 1).

The comment may be stored in a database in association with the webpage. Other web pages that contain the same, or similar, portion may beidentified (shown as web pages 2, 3, 4, 5, . . . , N in FIG. 1). Thecomment may then be associated with these other web pages too. Thus,when a user accesses one of these other web pages, the comment (whichwas originally created for a portion of web page 1) can also bepresented.

Exemplary Environment

FIG. 2 is a diagram of an exemplary environment 200 in which systems andmethods described herein may be implemented. Environment 200 may includemultiple clients 210 connected to multiple servers 220-240 via a network250. Two clients 210 and three servers 220-240 have been illustrated asconnected to network 250 for simplicity. In practice, there may be moreor fewer clients and servers. Also, in some instances, a client mayperform a function of a server and a server may perform a function of aclient.

Clients 210 may include client entities. An entity may be defined as adevice, such as a personal computer, a wireless telephone, a personaldigital assistant (PDA), a lap top, or another type of computation orcommunication device, a thread or process running on one of thesedevices, and/or an object executed by one of these devices. In oneimplementation, a client 210 may include a browser application thatpermits documents to be searched and/or accessed. Client 210 may alsoinclude software, such as a plug-in, an applet, a dynamic link library(DLL), or another executable object or process, that may operate inconjunction with (or be integrated into) the browser to obtain anddisplay comments. Client 210 may obtain the software from server 220 orfrom a third party, such as a third party server, disk, tape, network,CD-ROM, etc. Alternatively, the software may be pre-installed on client210. For the description to follow, the software will be described asintegrated into the browser.

In one implementation, as described herein, the browser may provide acommenting function. The commenting function may permit a user togenerate a comment regarding a document, permit the user to view acomment that was previously generated by the user or by other users,and/or permit the user to remove a comment from presentation via thebrowser (e.g., hide the comment from view).

Servers 220-240 may include server entities that gather, process,search, and/or maintain documents in a manner described herein. In oneimplementation, server 220 may gather, process, and/or maintain commentsthat are associated with particular documents. Servers 230 and 240 maystore or maintain comments and/or documents.

While servers 220-240 are shown as separate entities, it may be possiblefor one or more of servers 220-240 to perform one or more of thefunctions of another one or more of servers 220-240. For example, it maybe possible that two or more of servers 220-240 are implemented as asingle server. It may also be possible for a single one of servers220-240 to be implemented as two or more separate (and possiblydistributed) devices. The term “server system,” as used herein, isintended to refer to a single server 220-240 (whether implemented as asingle device or multiple devices) or a group of servers 220-240.

Network 250 may include any type of network, such as a local areanetwork (LAN), a wide area network (WAN), a telephone network (e.g., thePublic Switched Telephone Network (PSTN) or a cellular network), anintranet, the Internet, or a combination of networks. Clients 210 andservers 220-240 may connect to network 250 via wired and/or wirelessconnections.

Exemplary Components of Client and/or Server

FIG. 3 is a diagram of exemplary components of a client or server entity(hereinafter called “client/server entity”), which may correspond to oneor more of clients 210 and/or servers 220-240. As shown in FIG. 3, theclient/server entity may include a bus 310, a processor 320, a mainmemory 330, a read only memory (ROM) 340, a storage device 350, an inputdevice 360, an output device 370, and a communication interface 380. Inanother implementation, client/server entity may include additional,fewer, different, or differently arranged components than areillustrated in FIG. 3.

Bus 310 may include a path that permits communication among thecomponents of the client/server entity. Processor 320 may include aprocessor, a microprocessor, or processing logic (e.g., an applicationspecific integrated circuit (ASIC) or a field programmable gate array(FPGA)) that may interpret and execute instructions. Main memory 330 mayinclude a random access memory (RAM) or another type of dynamic storagedevice that may store information and instructions for execution byprocessor 320. ROM 340 may include a ROM device or another type ofstatic storage device that may store static information and instructionsfor use by processor 320. Storage device 350 may include a magneticand/or optical recording medium and its corresponding drive, or aremovable form of memory, such as a flash memory. The term “memory,” asused herein, is intended to be broadly interpreted to refer to any typeof memory or storage device, such as main memory 330, ROM 340, andstorage device 350.

Input device 360 may include a mechanism that permits an operator toinput information to the client/server entity, such as a keyboard, amouse, a button, a pen, a touch screen, voice recognition and/orbiometric mechanisms, etc. Output device 370 may include a mechanismthat outputs information to the operator, including a display, a lightemitting diode (LED), a speaker, etc. Communication interface 380 mayinclude any transceiver-like mechanism that enables the client/serverentity to communicate with other devices and/or systems. For example,communication interface 380 may include mechanisms for communicatingwith another device or system via a network, such as network 250.

As will be described in detail below, the client/server entity mayperform certain operations relating to the generation and presentationof comments. The client/server entity may perform these operations inresponse to processor 320 executing software instructions contained in acomputer-readable medium, such as memory 330. A computer-readable mediummay be defined as a logical or physical memory device. A logical memorydevice may include a space within a single physical memory device orspread across multiple physical memory devices.

The software instructions may be read into memory 330 from anothercomputer-readable medium, such as storage device 350, or from anotherdevice via communication interface 380. The software instructionscontained in memory 330 may cause processor 320 to perform processesthat will be described later. Alternatively, hardwired circuitry may beused in place of or in combination with software instructions toimplement processes described herein. Thus, implementations describedherein are not limited to any specific combination of hardware circuitryand software.

Exemplary Functional Components of Server

FIG. 4 is a diagram of exemplary functional components of server 220. Asshown in FIG. 4, server 220 may include a comments component 410, acomments database 420, a search engine component 430, and an indexdatabase 440. In another implementation, server 220 may include more orfewer functional components. For example, one or more of the functionalcomponents shown in FIG. 4 may be located in a device separate fromserver 220.

Comments component 410 may interact with clients 210 to obtain and/orserve comments. For example, a user of a client 210 may access aparticular document and generate a comment regarding a portion of thedocument. A “document portion,” as used herein, is intended to refer toless than the entire document. The document portion may include someamount of text (e.g., some number of words), an image, a video, or someaudio. Client 210 may send the comment and information regarding thedocument portion to comments component 410.

Comments component 410 may receive the comment provided by a client 210in connection with the particular document. Comments component 410 maygather certain information regarding the comment, such as informationregarding the author of the comment, a timestamp that indicates a dateand/or time at which the comment was created or modified, the content ofthe comment, the portion of the document with which the comment isassociated (e.g., the actual portion or some identifier that indicateswhere the portion is located within the document), and/or an identifier,such as a uniform resource locator (URL), associated with the document.Comments component 410 may receive at least some of this informationfrom client 210. Comments component 410 may store the informationregarding the comment in comments database 420.

Comments component 410 may also serve a comment in connection with adocument accessed by a client 210. In one implementation, commentscomponent 410 may obtain a comment from comments database 420 andprovide that comment to client 210 when client 210 accesses a documentwith which that comment is associated in comments database 420.

Comments database 420 may store information regarding comments. In oneimplementation, comments database 420 may include various fields thatare separately searchable. Comments component 410 may search commentsdatabase 420 to identify comments associated with a particular author ora particular document.

FIG. 5 is a diagram of exemplary fields that may be provided withincomments database 420. As shown in FIG. 5, comments database 420 mayinclude an author field 510, a timestamp field 520, a comment contentfield 530, a document portion field 540, an original document identifier(ID) field 550, an other document identifiers (IDs) field 560, and arating(s) field 570. In other implementations, comments database 420 mayinclude more or fewer fields.

Author field 510 may store information regarding the author of thecomment. For example, author field 510 may store the name of the author(e.g., actual name or online name), an image of the author, a graphicassociated with the author, the name of a geographic location of theauthor, or other information regarding the author. Timestamp field 520may store the date and/or time that the comment was created or modified.The date/time for timestamp field 520 may be generated by client 210 atwhich the comment was created or modified, or may be generated by server220 based on a date/time at which the comment or modification isreceived from client 210. For a comment that has multiple revisions,timestamp field 520 may store the date and/or time that one or more, orall, of the revisions occurred.

Comment content field 530 may store the content of the comment. Forexample, the content of a comment may include text, video data, imagedata, and/or audio data. In one implementation, comment content field530 may store the actual content of the comment. In anotherimplementation, comment content field 530 may store a pointer to astorage location where the actual content of the comment is stored.Document portion field 540 may store the content of the document portionwith which the comment is associated. For example, the content of thedocument portion may include text, video, image, and/or audio data. Inone implementation, document portion field 540 may store the actualcontent of the document portion. In another implementation, documentportion field 540 may store a pointer to a storage location where theactual content of the document portion is stored. In yet anotherimplementation, document portion field 530 may store an identifier, suchas an offset, that identifies where the document portion occurs withinthe document in which the document portion is located.

Original document identifier field 550 may store an address (e.g., aURL), or another type of unique identifier, for the document for whichthe comment was originally created. Other document identifiers field 560may store an address, or another type of unique identifier, for one ormore other documents with which the comment has been associated. As willbe described in detail below, a comment created regarding a portion ofone document may be associated with other documents that have the same,or similar, portion.

Rating(s) field 570 may store a rating for the comment. A rating may bebased on user feedback regarding the comment. For example, users may bepermitted to rate a comment (favorably or unfavorably). These ratingsmay be used to determine whether and/or how to present the comment inconnection with a particular document or any document. In oneimplementation, a single rating may be maintained for a comment. Thatsingle rating may be used to determine whether and/or how to present thecomment in connection with any document with which the comment has beenassociated. In another implementation, a separate rating may bemaintained for each document (or for a group of documents) with whichthe comment has been associated. In this case, the rating, associatedwith a particular document, may be used to determine whether to presentthe comment in connection with that particular document.

Returning to FIG. 4, search engine component 430 may receive thedocument portion from comments component 410 and locate other documentsthat include the same, or similar, document portion. When the documentportion includes text, search engine component 430 may locate otherdocuments that include the same, or similar, text. When the documentportion includes image data, search engine component 430 may locateother documents that include the same, or similar, image data. When thedocument portion includes video data, search engine component 430 maylocate other documents that include the same, or similar, video data.When the document portion includes audio data, search engine component430 may locate other documents that include the same, or similar, audiodata.

Techniques exist for locating exactly matching text, image data, videodata, and audio data. Search engine component 430 may use one of thesetechniques to locate a document with a matching document portion.Techniques also exist for locating approximately matching text, imagedata, video data, and audio data. These techniques may determine aconcept or topic associated with the document portion and locate anotherdocument portion relating to the same concept or topic. Alternatively,or additionally, these techniques may identify two document portions asmatching if at least a threshold amount of the two document portionsmatch. Alternatively, or additionally, these techniques may be based onsynonyms.

In one implementation, a document portion has to be greater than aparticular size before search engine component 430 locates matchingdocument portions in other documents. For a document portion thatincludes text, the document portion may need to include more than athreshold number of terms (e.g., words). For a document portion thatincludes image data, the document portion may need to be larger than acertain image size. For a document portion that includes video or audiodata, the document portion may need to be larger than a certain length(or duration).

Search engine component 430 may locate documents by searching indexdatabase 440. Index database 440 may include one or more indexes. Ifindex database 440 includes more than one index, index database 440 maystore the indexes in the same data structure or in different datastructures that may be searched independently of one another. Each ofthe one or more indexes may include multiple index entries, with eachentry containing a term stored in association with an item, from adocument, in which the term appears, and a location within the documentwhere the term appears.

Creating a Comment

FIG. 6 is a flowchart of an exemplary process for creating a comment. Inone implementation, the process of FIG. 6 may be performed by one ormore components within client 210, server 220, or a combination ofclient 210 and server 220. In another implementation, the process may beperformed by one or more components within another device or a group ofdevices separate from or including client 210 and/or server 220. Also,while FIG. 6 shows blocks in a particular order, the actual order maydiffer. For example, some blocks may be performed in parallel or in adifferent order than shown in FIG. 6.

The process of FIG. 6 may include presenting a document to a user ofclient 210 (block 610). For example, the user may access the documentvia a browser application operating on client 210. To obtain access tothe document, for example, the user might enter an address (e.g., a URL)into the address field of the browser, the user might select a documentfrom a list of documents (e.g., a list of favorites or bookmarks), orthe user might perform a search using a search engine and select asearch result corresponding to the document.

An option to provide a comment regarding the document may be presented(block 620). For example, the browser may include a user interface item(e.g., a button, a menu item, etc.) that may permit the user to turn onand turn off the commenting function provided by the browser. The usermay select this user interface item to create a comment, to view acomment, and/or to remove a presented comment from view (e.g., hide thecomment from view).

FIG. 7 is a diagram of an exemplary user interface that may be presentedto a user to permit the user to activate the commenting function of thebrowser. As shown in FIG. 7, a browser window 700 may include an add-ontoolbar 710 that includes a search box and a number of software buttons.In one implementation, toolbar 710 may include a comments button 720.Comments button 720 may optionally include information regarding thenumber of comments (shown as “(2)” in FIG. 7) that have been previouslyassociated with the document that the user is currently accessing (shownas “www.javatalk.com/tostrings.htm” in FIG. 7).

Comments button 720 may permit the user to turn on and off thecommenting function. In one implementation, selection of comments button720 may cause a menu 730 to be presented. Menu 730 may include a numberof options including, for example, an option to create a comment 732, anoption to show previously created comments 734, and an option to hidethe comments 736. The user may select option 732 to generate a commentregarding the document that the user is currently accessing. The usermay select option 734 to view a comment that was previously associatedwith the document that the user is currently accessing (e.g., FIG. 7shows that two comments have been previously associated with thedocument). The user may select option 736 to remove any presentedcomments from view (e.g., hide the comments from view).

Returning to FIG. 6, selection of a portion of the document may bereceived (block 630). For example, the user may select a portion of thedocument upon which to comment (referred to hereinafter as “documentportion”). The document portion may correspond to text, video data,image data, and/or audio data from the document. As explained above, thedocument portion may include less than the entirety of the document. Theuser might select the document portion using any existing technique,such as a technique involving the user's mouse or keyboard.

Selection of the option to provide a comment regarding the document maybe received (block 640). For example, the user might activate thecommenting feature. In one implementation, the user might activate thecommenting feature by selecting an item from a menu or by selecting abutton on a toolbar. As shown in FIG. 7, for example, the user mayselect comments button 720 on toolbar 710 within browser window 700,and/or may select option 734 on menu 730.

A user interface may be presented to the user for creating the comment(block 650). For example, in response to receiving selection of commentsbutton 720, the browser may present the user with a user interface viawhich the user may create a comment regarding the document portion. Thecontent of the comment may be received (block 660). For example, theuser may, via the user interface, input the content of the commentand/or insert a file as the content of the comment.

FIG. 8 is a diagram of an exemplary user interface that may be presentedto a user to permit the user to create a comment. As shown in FIG. 8,browser window 700 may present a user interface 800 via which the usermay enter the contents of the comment. User interface 800 may includeinput section 810, an option 820 to insert a file, a tags section 830,and save/discard options 840. Input section 810 may include an area intowhich the user may insert the contents of the comment (whether in theform of text, image data, video data, and/or audio data). Option 820 maypermit the user to identify a file to be inserted into or attached tothe comment. Tags section 830 may permit the user to identify keywordsto associate with the comment. Save/discard options 840 may permit theuser to select whether to save the comment or discard the commentwithout saving the comment.

Returning to FIG. 6, information associated with the comment may bestored (block 670). For example, the browser of client 210 may sendinformation associated with the comment to comments component 410 ofserver 220. This information may include, for example, the name of theauthor of the comment (e.g., the user's name), a timestamp indicatingthe date and/or time that the comment was created or modified, thecontent of the comment, the document portion to which the commentcorresponds, and/or the document identifier for the document containingthe document portion (referred to herein as “originating document”).Comments component 410 may create or update an entry in commentsdatabase 420 using this information.

Spreading Comment to Other Documents

FIG. 9 is a flowchart of an exemplary process for spreading a comment toother documents. In one implementation, the process of FIG. 9 may beperformed by one or more components within server 220, client 210, or acombination of server 220 and client 210. In another implementation, theprocess may be performed by one or more components within another deviceor a group of devices separate from or including server 220 and/orclient 210. Also, while FIG. 9 shows blocks in a particular order, theactual order may differ. For example, some blocks may be performed inparallel or in a different order than shown in FIG. 9.

The process of FIG. 9 may be periodically performed on comments storedin comments database 420. Alternatively, the process of FIG. 9 may beperformed, with regard to a particular comment, after informationassociated with that particular comment is stored in comments database420. As described above, the information associated with a comment,stored in comments database 420, may include, for example, the name ofthe author of the comment, a timestamp indicating the date and/or timethat the comment was created or modified, the content of the comment,the document portion to which the comment corresponds, and/or thedocument identifier for the originating document.

A comment may be selected (block 910). For example, comments component410 may select an entry, corresponding to a comment, in commentsdatabase 420. It may be determined whether the size of the documentportion, corresponding to the comment, is greater than a threshold (T/H)size (block 920). For example, comments component 410 may determinewhether the size of the document portion included in, or identified by,the entry (e.g., in the document portion field 540 of the entry) isgreater than a threshold size. When the document portion takes the formof text, comments component 410 may determine whether the text includesa number of terms (e.g., words) greater than a threshold number ofterms. When the document portion takes the form of image data, commentscomponent 410 may determine whether the image data has an image sizegreater than a threshold image size. When the document portion takes theform of video or audio data, comments component 410 may determinewhether a length (or duration) of the video or audio data is greaterthan a threshold length (or duration).

When the size of the document portion is greater than the threshold size(block 920—YES), other documents (other than the originating document)that contain the same, or similar, document portion may be located(block 930). For example, when the size of the document portion isgreater than the threshold size, comments component 410 may send thedocument portion to search engine component 430, or otherwise identifythe document portion to search engine component 430.

In one implementation, search engine component 430 may locate documentsthat contain a document portion that exactly matches the documentportion of the originating document. In another implementation, searchengine component 430 may locate documents that contain a documentportion that is similar to the document portion of the originatingdocument. In this case, search engine component 430 may determine adegree of match between the document portions and may generate a scorethat reflects this degree of match. Exemplary techniques for determiningwhether two document portions match, will be described below.

The comment may be associated with the located documents (block 940).For example, search engine component 430 may provide informationregarding the located documents to comments component 410. In oneimplementation, the information, provided to comments component 410, mayinclude addresses (e.g., URLs) of the located documents. In anotherimplementation, the information, provided to comments component 410 mayadditionally include the score reflecting the degree of match betweenthe document portions. Comments component 410 may update the entry,corresponding to the comment, in comments database 420 with theinformation regarding the located documents. For example, commentscomponent 410 may store the addresses of the located documents (andperhaps the scores reflecting the degree of match between the documentportions) in the other document identifiers field 560 in commentsdatabase 420.

A next comment may be selected (block 950). For example, commentscomponent 410 may select another comment to process and return to block920 or block 930. In the implementation where a comment is processedwhen an entry for the comment is created in comments database 420, theprocess of FIG. 9 may end without selecting a next comment to process.

When the size of the document portion is not greater than the thresholdsize (block 920—NO), a next comment may be selected (block 950). Forexample, comments component 410 may select another comment to processand return to block 920 or block 930. In one implementation, commentscomponent 410 may mark an entry containing a comment associated with adocument portion with a size that is not greater than the threshold sizeby, for example, setting a flag. In this case, comments component 410may select a next comment to process as a comment that has a documentportion with a size that is greater than the threshold size. In theimplementation where a comment is processed when an entry for thecomment is created in comments database 420, the process of FIG. 9 mayend without selecting a next comment to process.

Document portions of small size (e.g., with a size not greater than thethreshold) may result in the identification of a large number ofdocuments with matching document portions, where these documents do notcontain content that is relevant to the subject of the comment. Byrequiring that the document portion have a certain size, beforeassociating the comment with other documents (i.e., other than theoriginating document), may result in the comments being moremeaningfully presented in connection with other documents.

In another implementation, a feature, other than (or in addition to) thesize of the document portion for which the comment was originallycreated, may be used to determine whether to associate a comment withother documents. In one alternative implementation, for example,comments may be associated with other documents based on a scoreassigned to the comment. A score may be generated for a comment usingone or more factors that will be described in detail below. A commentmay be associated with the other documents when the score of the commentis greater than a certain threshold. In yet another alternativeimplementation, other features, or a combination of features, may beused to determine whether to associate a comment with other documents.

Exemplary Techniques for Identifying Matching Document Portions

As explained above, search engine component 430 may locate documentsthat contain a document portion that matches the document portion of theoriginating document. The technique(s) used to identify a match maydiffer based on whether the document portion includes text, image data,video data, and/or audio data.

With regard to text, for example, search engine component 430 maydetermine, given the text of the document portion, whether the documentportion text matches text in other documents included in index database440. Search engine component 430 may generate a confidence score foreach document that indicates how near a match the document portion textis to text in the other documents. Search engine component 430 mayidentify other documents with confidence scores above a certainthreshold as documents containing document portions matching thedocument portion of the originating document.

There are various techniques that search engine component 430 may use toidentify a match. In one implementation, search engine component 430 mayuse a chunking technique. The chunking technique takes sets ofcontiguous terms (where each set may share one or more terms with a nextor preceding set, or each set may share no terms with the next orpreceding set) (called “chunks”), performs a hash on the chunks, andcompares the number of matching chunks. By comparing the chunks, searchengine component 430 may determine a percentage of overlap between twosets of text in two different documents. Search engine component 430 maygenerate a confidence score based on the amount of overlap between thechunks of the two sets of text.

In another implementation, search engine component 430 may use asimilarity detection technique. The similarity detection technique mayconsider a set of text as a vector of terms. For example, a vector maybe created for each group of terms (e.g., sentence) in the set of text.The vector may include an entry for each unique term in the group. Thesimilarity detection technique may generate a confidence score based onthe number of the vectors that match between the two sets of text.

In yet another implementation, search engine component 430 may use adifferent technique, or a combination of techniques, to identify a matchbetween two sets of text. For example, search engine component 430 mayperform a search on index database 440 to identify documents thatcontain at least a threshold number of terms of the document portiontext. Search engine component 430 may then perform a text-matchingtechnique to determine a confidence score that indicates how near amatch the document portion text is to text in the identified documents.

In a further implementation, search engine component 430 may use amachine learning technique to learn rules for a model that may be usedto determine whether two sets of text match. This technique may identifysynonyms of terms and/or identify text that relate to a same topic orconcept even if the text does not contain terms in common.

With regard to image data, search engine component 430 may determine,given the image data of the document portion, whether the documentportion image matches an image in a document within index database 440.Search engine component 430 may generate a confidence score for eachdocument in index database 440 that indicates how near a match thedocument portion image is to an image in the documents. Search enginecomponent 430 may identify documents with confidence scores above acertain threshold as documents with document portions that match thedocument portion of the originating document.

There are various techniques that search engine component 430 may use toidentify a match. In one implementation, search engine component 430 mayuse a technique that compares features of images. A number of differentpossible image features may be used. Examples of image features that maybe used include image features based on, for example, intensity, color,edges, texture, wavelet-based techniques, or other aspects of the image.

Regarding intensity, for example, each image may be divided into smallpatches (e.g., rectangles, circles, etc.) and an intensity histogramcomputed for each patch. Each intensity histogram may be considered tobe a feature for the image. Similarly, as an example of a color-basedfeature, a color histogram may be computed for each patch (or fordifferent patches) within each image. A color histogram can be similarlycomputed to obtain a possible color-based histogram. The color histogrammay be calculated using any known color space, such as the RGB (red,green, blue) color space, YIQ (luma (Y) and chrominance (IQ)), oranother color space.

Histograms can also be used to represent edge and texture information.For example, histograms can be computed based on patches of edgeinformation or texture information in an image. For wavelet basedtechniques, a wavelet transform may be computed for each patch and usedas an image feature.

In some implementations, to improve computation efficiency, features maybe computed only for certain areas within images. For example, “objectsof interest” within an image may be determined and image features mayonly be computed for the objects of interest. For example, if the imagefeature being used is a color histogram, a histogram may be computed foreach patch in the image that includes an object of interest. Objects ofinterest within an image can be determined in a number of ways. Forexample, for color, objects of interest may be defined as points wherethere is high variation in color (i.e., areas where color changessignificantly). In general, objects of interest can be determinedmathematically in a variety of ways and are frequently based ondetermining discontinuities or differences from surrounding points. TheScale-Invariant Feature Transform (SIFT) algorithm is an example of onetechnique for locating objects of interest.

Additionally, in some implementations, the various features describedabove may be computed using different image scales. For example, animage can be examined and features computed in its original scale andthen features may be successively examined at smaller scales.Additionally or alternatively, features may be selected as features thatare scale invariant or invariant to affine transformations. The SIFTtechnique, for example, can be used to extract distinctive invariantobjects from images. The extracted objects are invariant to image scaleand rotation.

For each feature that is to be used, a comparison function may be used.In general, a comparison function may operate to generate a confidencescore defining a similarity between a particular feature computed fortwo images. For image features based on histograms, for example, thecomparison function may include a simple histogram comparer function.For image features other than those based on histograms, a differentcomparison function may be used.

In another implementation, search engine component 430 may use anothertechnique, or a combination of techniques, to determine whether twoimages match. For example, search engine component 430 may use ahash-based technique, a byte-by-byte comparison technique, or a cyclicredundancy check (CRC) technique. Additionally, or alternatively, searchengine component 430 may compare tag information (e.g., labels or othermeta-data assigned to the images) to determine whether two images match.

With regard to video data, search engine component 430 may determine,given the video of the document portion, whether the document portionvideo matches a video in a document of index database 440. Search enginecomponent 430 may generate a confidence score for each document in indexdatabase 440 that indicates how near a match the document portion videois to a video in the documents (e.g., a document may include a link forplaying or downloading the video or provide a player via which the videocan be played). Search engine component 430 may identify documents withconfidence scores above a certain threshold as documents with documentportions that match the document portion of the originating document.

There are various techniques that search engine component 430 may use toidentify a match. In one implementation, search engine component 430 maydivide videos into frames and use a technique, similar to a techniqueused by search engine component 430 in determining image matches, toidentify matches in the frames of two videos. Search engine component430 may generate a confidence score that is based on the number offrames that match between two videos.

In another implementation, search engine component 430 may use atechnique that compares text data, such as closed captioning text or aspeech transcription, associated with two videos to determine whetherthe videos match. In this case, search engine component 430 may use atechnique similar to a technique used by search engine component 430 inidentifying a text match. In yet another implementation, search enginecomponent 430 may divide the videos into short clips and producespatio-temporal descriptors that are used to identify matching videos.This technique is described in further detail in D. DeMenthon, “VideoRetrieval of Near-Duplicates Using K-Nearest Neighbor Retrieval ofSpatio-Temporal Descriptors,” Language and Media Processing (LAMP),University of Maryland Institute for Advanced Computer Studies (UMIACS),2006.

In yet another implementation, search engine component 430 may useanother technique, or a combination of techniques, to determine whethertwo videos match. For example, search engine component 430 may use ahash-based technique, a byte-by-byte comparison technique, or a cyclicredundancy check (CRC) technique. Additionally, or alternatively, searchengine component 430 may compare tag information (e.g., labels or othermeta-data assigned to the videos) to determine whether two videos match.

With regard to audio data, search engine component 430 may determine,given the audio data of the document portion, whether the audio documentportion matches audio associated with documents in index database 440.Search engine component 430 may generate a confidence score for eachdocument in index database 440 that indicates how near a match thedocument portion audio is to audio in the documents (e.g., a documentmay include a link for playing or downloading the audio or provide aplayer via which the audio can be played). Search engine component 430may identify documents with confidence scores above a certain thresholdas documents with document portions that match the document portion ofthe originating document.

There are various techniques that search engine component 430 may use toidentify a match. In one implementation, search engine component 430 mayuse an audio fingerprinting technique. The audio fingerprintingtechnique may generate a fingerprint for segments of the audio andcompare these segments to audio associated with documents in indexdatabase 440. By comparing the segments, search engine component 430 maydetermine a percentage of overlap between two sets of audio. Searchengine component 430 may generate a confidence score based on the amountof overlap between the segments of the two sets of audio.

In another implementation, search engine component 430 may use atechnique that compares text data, such as a speech transcription,associated with two sets of audio to determine whether the two sets ofaudio match. In this case, search engine component 430 may use atechnique similar to a technique used by search engine component 430 inidentifying text matches.

In yet another implementation, search engine component 430 may useanother technique, or a combination of techniques, to determine whethertwo sets of audio match. For example, search engine component 430 mayuse a hash-based technique, a byte-by-byte comparison technique, or acyclic redundancy check (CRC) technique. Additionally, or alternatively,search engine component 430 may use tag information (e.g., labels orother meta-data assigned to the audio data) to determine whether twosets of audio match.

Using one or a combination of the techniques identified above, searchengine component 430 may locate documents that contain document portionsthat match the document portion of the originating document.Additionally, or alternatively, search engine component 430 maydetermine a concept or topic associated with the originating documentand a concept or topic associated with each of the located documents.Search engine component 430 may remove, from further consideration, anydocuments relating to a concept or topic that does not match the conceptor topic of the originating document.

Presenting a Comment in Connection with a Document

FIG. 10 is a flowchart of an exemplary process for presenting a commentin connection with a document. In one implementation, the process ofFIG. 10 may be performed by one or more components within client 210,server 220, or a combination of client 210 and server 220. In anotherimplementation, the process may be performed by one or more componentswithin another device or a group of devices separate from or includingclient 210 and/or server 220. Also, while FIG. 10 shows blocks in aparticular order, the actual order may differ. For example, some blocksmay be performed in parallel or in a different order than shown in FIG.10.

The process of FIG. 10 may include presenting a document to a user ofclient 210 (block 1010). For example, the user may access the documentvia a browser application operating on client 210. To obtain access tothe document, for example, the user might enter an address (e.g., a URL)into the address field of the browser, the user might select a documentfrom a list of documents (e.g., a list of favorites or bookmarks), orthe user might perform a search using a search engine and select asearch result corresponding to the document.

An option to show comments associated with the document may be presented(block 1020). For example, the browser may include a user interface item(e.g., a button, a menu item, etc.) that may permit the user to turn onand turn off the commenting function provided by the browser. The usermay select this user interface item to create a comment, to view acomment, and/or to remove a presented comment from view (e.g., hide thecomment from view). In another implementation, the showing of commentsregarding a document may occur automatically. For example, a comment,associated with a document, may be automatically shown when the commenthas a score above a particular threshold. Exemplary techniques forscoring comments are described below. Thus, in this implementation, acomment that does not have a sufficient score may not be automaticallyshown.

FIG. 11 is a diagram of an exemplary user interface that may bepresented to a user to permit the user to activate the commentingfunction of the browser. As shown in FIG. 11, a browser window 1100 mayinclude an add-on toolbar 1110 that includes a search box and a numberof software buttons. In one implementation, toolbar 1110 may include acomments button 1120. Comments button 1120 may optionally includeinformation regarding the number of comments (shown as “(2)” in FIG. 11)that have been previously associated with the document that the user iscurrently accessing (shown as “www.javatimes.com” in FIG. 11).

Comments button 1120 may permit the user to turn on and off thecommenting function. In one implementation, selection of comments button1120 may cause a menu 1130 to be presented. Menu 1130 may include anumber of options including, for example, an option to create a comment1132, an option to show previously created comments 1134, and an optionto hide the comments 1136. The user may select option 1132 to generate acomment regarding the document that the user is currently accessing. Theuser may select option 1134 to view a comment that was previouslyassociated with the document that the user is currently accessing (e.g.,FIG. 11 shows that two comments have been previously associated with thedocument). The user may select option 1136 to remove any presentedcomments from view (e.g., hide the comments from view).

Returning to FIG. 10, selection of the option to provide a commentregarding the document may be received (block 1030). For example, theuser might activate the commenting feature. In one implementation, theuser might activate the commenting feature by selecting an item from amenu or by selecting a button on a toolbar. As shown in FIG. 11, forexample, the user may select comments button 1120 on toolbar 1110 withinbrowser window 1100, and/or may select option 1134 on menu 1130.

A comment(s) to show in connection with the document may be selected(block 1040). In one implementation, client 210 may send, to server 220,a request for comments associated with the document. For example, client210 may send information regarding the document, such as a documentidentifier for the document, to comments component 410. Commentscomponent 410 may search comments database 420 using, for example, thedocument identifier for the document to retrieve the comments associatedwith the document. In another implementation, an index of commentsdatabase 420 may be constructed that lists the comments associated witheach document. The index may be constructed using existing indexingtechniques. The constructed index may be used to select one or morecomments to provide in connection with the document. In yet anotherimplementation, the index for comments database 420 may only includethose comments having a score above a certain threshold. Exemplarytechniques for scoring comments are described below.

Comments component 410 may select which comments to present and/or amanner for presenting the comments. In one implementation, commentscomponent 410 may rank the comments in some manner. For example,comments component 410 may generate a score for each of the commentsbased on one or more factors associated with the comments. One factorfor scoring a comment may include a rating of the comment. Userfeedback, in the form of a rating, may be obtained for various comments.A user may be permitted to provide a rating with regard to a commentpresented in connection with a particular document. In oneimplementation, the rating may indicate whether the user found thecomment useful (positive rating) or not useful (negative rating) inconnection with the particular document. In another implementation, therating may indicate a degree of usefulness, such as a rating from 1 to5. Not all ratings need to be treated equally. For example, ratings fromusers may be weighted in some manner based on profiles of the usersand/or a history of how the users' rating behavior has been in the past(e.g., how a user's past ratings compared to other users' ratings withregard to a particular comment or a particular set of comments).

Comments component 410 may obtain the rating of a comment from rating(s)field 570 in comments database 420. Comments component 410 may use therating factor to score a comment and use the score of a comment todetermine whether to present that comment (e.g., present only commentswith scores above a threshold) and/or a manner in which to present thecomments (e.g., present comments in an order based on their scores). Byusing a rating to score a comment, comments in which users areinterested (e.g., that users find useful) may be presented in connectionwith a document before or, instead of, comments in which users are notinterested (e.g., that users did not find useful).

Another factor for scoring a comment may include a rank of an author ofthe comment. The author of a comment may be ranked based on one or morefactors, such as the quantity of comments created by the author, a userfeedback rating associated with the author (e.g., users might providefeedback regarding comments created by a particular author and thisinformation may be used to rate the author), or whether the author isthe user (e.g., users are typically interested in being presented withtheir own comments). Comments component 410 may use the author rankingfactor to score a comment and use the score of the comment to determinewhether to present that comment (e.g., present only comments with scoresabove a threshold) and/or a manner in which to present the comments(e.g., present comments in an order based on their scores). The rank ofan author may reflect the quality of the comment created by that author.Thus, by using an author ranking to score a comment, comments associatedwith higher ranked authors may be presented over comments associatedwith lower ranked authors.

Yet another factor for scoring a comment may include a timestampassociated with the comment. Comments component 410 may obtain thetimestamp from timestamp field 520 in comments database 420. Commentscomponent 410 may use the timestamp factor to score a comment and usethe score of the comment to determine whether to present that comment(e.g., present only comments with scores above a threshold) and/or amanner in which to present the comments (e.g., present comments in anorder based on their scores). More recent timestamps may reflect fresh,more relevant comments, and less recent timestamps may reflect stale,less relevant comments. In the case of comments with revisions,timestamps reflecting comments with more modifications may infer morerelevant comments than comments with fewer modifications. Thus, by usinga timestamp to score a comment, comments that are more recent (or thathave more modifications), and thus, potentially more relevant, may bepresented over comments that are older (or that have fewermodifications), and potentially less relevant.

A further factor for scoring a comment may include a degree of matchbetween the document portion, associated with the originating document,and the document portion associated with the document that the user iscurrently accessing. As described above, when search engine component430 determines whether two document portions match, search enginecomponent 430 may determine a degree of match between the documentportions and generate a score based on this degree of match. Commentscomponent 410 may use the degree of match factor to score a comment anduse the score of the comment to determine whether to present thatcomment (e.g., present only comments with scores above a threshold)and/or a manner in which to present the comments (e.g., present commentsin an order based on their scores). A comment may be more relevant to adocument with a higher degree of match of its document portion than to adocument with a lower degree of match to its document portion. Thus, byusing a degree of match to score a comment, comments that are associatedwith a higher degree of matching document portions (thus, potentiallymore relevant to the document for which the comment is to be presented)may be presented over comments that are associated with a lower degreeof matching document portions (thus, potentially less relevant to thedocument for which the comment is to be presented).

Comments component 420 may use one or more of the above-identifiedfactors, and/or other factors, in scoring the comments associated withthe document. Comments component 420 may select one or more of thecomments based on the scores of the comments.

The selected comment(s) may be presented (block 1050). For example,comments component 420 may send the selected comment(s) to client 210for presentation by the browser of client 210. In one implementation,the browser may present one or more of the comments within the browserwindow in which the document is presented. In another implementation,the browser may present one or more of the comments within a windowseparate from the window in which the document is presented. In yetanother implementation, the browser may create a frame (e.g., a regularframe or iframe) and insert information regarding one or more commentsin the frame. In a further implementation, the browser may use anothermechanism for presenting one or more of the comments.

FIG. 12 is a diagram of an exemplary user interface via which a commentmay be presented. As shown in FIG. 12, browser window 1100 may include adocument section 1210 and a comments section 1220. Document section 1210may include the content of the document that the user is currentlyaccessing. In one implementation, document section 1210 may behighlighted to identify the portion of the document (i.e., “documentportion”) to which the comment relates.

Comments section 1220 may include a header section 1222, an author name1224, a timestamp 1226, a comment content 1228, tags 1230, rating option1232, options 1234, and originating information 1236. Header section1222 may include information regarding a quantity of comments that existfor this document, an option to see a next (or previous) comment, and/oran option to add a comment. Author name 1224 may include the name of theuser that created the comment. Timestamp 1226 may include the dateand/or time at which the comment was created or modified. Commentcontent 1228 may include the content of the comment.

Tags 1230 may include keywords that may relate to a concept or topic ofthe comment or the document for which the comment was created. Ratingoption 1232 may present an option to the user to rate the comment(favorable or unfavorable rating). Rating option 1232 may also presentinformation that indicates how many users found the comment useful(and/or not useful). Options 1234 may present options to the user toedit the comment, delete the comment, and/or obtain additionalinformation regarding the comment. The additional information mayinclude information regarding the other documents with which the commentis associated. Originating information 1236 may include informationregarding the document for which the comment was originally created(i.e., the originating document). Originating information 1236 may alsopresent a link to the originating document.

Returning to FIG. 10, any user feedback may be recorded (block 1060).For example, if the user provides user feedback via rating option 1232,the browser may capture this feedback and provide the feedback tocomments component 410. Comments component 410 may store the feedback incomments database 420. In one implementation, comments component 410 maycombine the feedback with other feedback already received for thecomment and this particular document, or for the comment and anydocument with which the comment has been associated.

CONCLUSION

Implementations, described herein, may spread comments from a documentfor which the comment was originally created to other documents forwhich the comment may be relevant.

The foregoing description provides illustration and description, but isnot intended to be exhaustive or to limit the invention to the preciseform disclosed. Modifications and variations are possible in light ofthe above teachings or may be acquired from practice of the invention.

For example, while series of blocks have been described with regard toFIGS. 6, 9, and 10, the order of the blocks may be modified in otherimplementations. Further, non-dependent blocks may be performed inparallel.

Also, exemplary graphical user interfaces have been described withrespect to FIGS. 7, 8, 11, and 12. In other implementations, thegraphical user interfaces may include more, fewer, or different piecesof information.

Also, certain portions of the implementations have been described as“logic” or a “component” that performs one or more functions. The terms“logic” or “component” may include hardware, such as a processor, anASIC, or a FPGA, or a combination of hardware and software (e.g.,software running on a general purpose processor—creating a specificpurpose processor).

Further, it has been described that scores are generated for comments.The scoring scheme has been described where higher scores are betterthan lower scores. This need not be the case. In another implementation,the scoring scheme may be switched to one in which lower scores arebetter than higher scores.

Also, it has been described that users create comments regardingdocument portions. In another implementation, comments may be createdfor entire documents.

It will be apparent that aspects described herein may be implemented inmany different forms of software, firmware, and hardware in theimplementations illustrated in the figures. The actual software code orspecialized control hardware used to implement aspects does not limitthe embodiments. Thus, the operation and behavior of the aspects weredescribed without reference to the specific software code—it beingunderstood that software and control hardware can be designed toimplement the aspects based on the description herein.

Even though particular combinations of features are recited in theclaims and/or disclosed in the specification, these combinations are notintended to limit the disclosure of the invention. In fact, many ofthese features may be combined in ways not specifically recited in theclaims and/or disclosed in the specification. Although each dependentclaim listed below may directly depend on only one other claim, thedisclosure of the invention includes each dependent claim in combinationwith every other claim in the claim set.

No element, act, or instruction used in the present application shouldbe construed as critical or essential to the invention unless explicitlydescribed as such. Also, as used herein, the article “a” is intended toinclude one or more items. Where only one item is intended, the term“one” or similar language is used. Further, the phrase “based on” isintended to mean “based, at least in part, on” unless explicitly statedotherwise.

1-34. (canceled)
 35. A method comprising: receiving, using one or moredevices, a comment relating to a portion of a first document;identifying, using the one or more devices, one or more second documentsbased on the portion of the first document, each second document, of theone or more second documents, including a portion that is similar to theportion of the first document; storing, in a memory associated with theone or more devices, the comment with information identifying the firstdocument and the one or more second documents; receiving, by the one ormore devices, a request to present comments with one of the one or moresecond documents; determining, by the one or more devices, whether topresent the comment with the one of the one or more second documentsbased on receiving the request, determining whether to present thecomment including: determining a score of the comment, and determiningwhether the score exceeds a threshold; and providing, by the one or moredevices, the comment for presentation with the one of the one or moresecond documents when the score of the comment exceeds the threshold.36. The method of claim 35, where determining the score of the commentincludes: obtaining a rating of the comment; and determining the scoreof the comment based on the rating of the comment.
 37. The method ofclaim 35, where determining the score of the comment includes:determining the score of the comment based on a rank of an author of thecomment.
 38. The method of claim 37, where the rank of the author of thecomment is based on one or more of: a quantity of comments created bythe author, or a user feedback rating associated with the author. 39.The method of claim 37, where the one of the one or more seconddocuments is accessed by a user, and where the rank of the author of thecomment is based on the user being the author.
 40. The method of claim35, where determining the score of the comment includes: determining adegree of match between the portion of the first document and theportion of the one of the one or more second documents; and determiningthe score of the comment based on the degree of match.
 41. The method ofclaim 35, where storing the comment with the information identifying thefirst document and the one or more second documents includes: storing,in the memory, information identifying the portion of the first documentand at least one of: a timestamp associated with the comment,information identifying an author of the comment, informationidentifying a rating of the comment, or an address of the first documentand one or more addresses of the one or more second documents.
 42. Asystem comprising: one or more devices to: receive a comment relating toa portion of a first document; identify one or more second documentsbased on the portion of the first document, each second document, of theone or more second documents, including a portion that is similar to theportion of the first document; store, in a memory associated with theone or more devices, the comment with information identifying the firstdocument and the one or more second documents; receive a request topresent comments with one of the one or more second documents; determinea score of the comment based a plurality of: information regarding anauthor of the comment, a degree of match between the portion of thefirst document and the portion of the one of the one or more seconddocuments, or a rating of the comment; determine whether the scoreexceeds a threshold; and provide the comment for presentation with theone of the one or more second documents when the score of the commentexceeds the threshold.
 43. The system of claim 42, where, whendetermining the score of the comment, the one or more devices are to:determine the score of the comment further based on a timestampassociated with the comment, the timestamp indicating a date or time atwhich the comment was created or modified.
 44. The system of claim 42,where, when determining the score of the comment, the one or moredevices are to: determine the score of the comment based on theinformation regarding the author of the comment and at least one of: thedegree of match, or the rating of the comment.
 45. The system of claim44, where the information regarding the author of the comment includes arank of the author of the comment, and where the rank of the author ofthe comment reflects a quality of the comment.
 46. The system of claim45, where the information regarding the author of the comment includes arank of the author of the comment, and where the rank of the author ofthe comment is based on one or more of: a quantity of comments createdby the author, or a user feedback rating associated with the author. 47.The system of claim 45, where the one of the one or more seconddocuments is being accessed by a user, where the information regardingthe author of the comment includes a rank of the author of the comment,and where the rank of the author of the comment is based on the userbeing the author.
 48. The system of claim 42, where the one or moredevices are to: determine that the score exceeds the threshold; andprovide the comment for presentation with the one of the one or moresecond documents based on determining that the score exceeds thethreshold, where, when providing the comment for presentation with theone of the one or more second documents based on determining that thescore exceeds the threshold, the one or more devices are to at least oneof: highlight the portion of the one of the one or more second documentsbased on the comment being associated with the portion of the one of theone or more second documents, or provide: information regarding thefirst document, and at least one of:  the information regarding theauthor of the comment, or  the rating of the comment.
 49. Anon-transitory computer-readable medium for storing instructions, theinstructions comprising: a plurality of instructions that, when executedby one or more processors, cause the one or more processors to: receivea comment relating to a portion of a first document; identify one ormore second documents based on the portion of the first document, eachsecond document, of the one or more second documents, including aportion that is similar to the portion of the first document; store, ina memory associated with the one or more devices, the comment withinformation identifying the first document and the one or more seconddocuments; receive a request to present comments with one of the one ormore second documents; determine a score of the comment based aplurality of: information regarding an author of the comment, a degreeof match between the portion of the first document and the portion ofthe one of the one or more second documents, or a rating of the comment;determine whether the score exceeds a threshold; and provide the commentfor presentation with the one of the one or more second documents whenthe score of the comment exceeds the threshold.
 50. The non-transitorycomputer-readable medium of claim 49, where the instructions furthercomprise: one or more instructions to determine that the score exceedsthe threshold; and one or more instructions to provide the comment forpresentation with the one of the one or more second documents based ondetermining that the score exceeds the threshold, where the one or moreinstructions to provide the comment for presentation with the one of theone or more second documents based on determining that the score exceedsthe threshold include: one or more instructions to highlight the portionof the one of the one or more second documents based on the commentbeing associated with the portion of the one of the one or more seconddocuments.
 51. The non-transitory computer-readable medium of claim 49,where the instructions further comprise: one or more instructions todetermine that the score exceeds the threshold; and one or moreinstructions to provide the comment for presentation with the one of theone or more second documents based on determining that the score exceedsthe threshold, where the one or more instructions to provide the commentfor presentation with the one of the one or more second documents basedon determining that the score exceeds the threshold include: one or moreinstructions to provide: information regarding the first document, andat least one of:  the information regarding the author of the comment,or  the rating of the comment.
 52. The non-transitory computer-readablemedium of claim 49, where one or more instructions, of the plurality ofinstructions, to determine the score of the comment include: one or moreinstructions to determine the score of the comment based on the degreeof match and at least one of: the information regarding the author ofthe comment, or the rating of the comment.
 53. The non-transitorycomputer-readable medium of claim 49, where one or more instructions, ofthe plurality of instructions, to determine the score of the commentinclude: one or more instructions to determine the score of the commentbased on the information regarding the author of the comment and atleast one of: the degree of match, or the rating of the comment.
 54. Thenon-transitory computer-readable medium of claim 49, where one or moreinstructions, of the plurality of instructions, to store the commentwith the information identifying the first document and the one or moresecond documents include: one or more instructions to store, in thememory, the information identifying the portion of the first documentand a plurality of: a timestamp associated with the comment, informationidentifying the author of the comment, information identifying therating of the comment, or an address of the first document and one ormore addresses of the one or more second documents.